{{tag>Bionic Focal Jammy windows programmation powershell pwsh vmware powercli vrops metrologie }}

====== VMware vRealize Operations ======

VMware **vRealize Operations**, dit **vROps**, est un logiciel de métrologie de serveurs.

Nous allons voir ici comment y accéder en ligne de commande sous Linux.
===== Prérequis =====

Avoir [[powershell|Powershell]] d'installé sous votre Ubuntu.

Un serveur vROps **Serveur-vROps.intra** opérationnel et les droits utilisateur suffisant pour accéder à ce serveur.

===== Installation =====

exécuter Powershell en root :

<code bash>sudo pwsh</code>

Installer le module client VMware :

<code powershell>install-module -name VMware-PowerCLI</code>


===== Configurations initiales =====

<code powershell>Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false</code>

Pour voir la version de son client :

<code powershell>Get-PowerCLIVersion</code>

Ensuite il faut ignorer les erreurs d'identification de certificat https :

<code powershell>Set-PowerCLIConfiguration -InvalidCertificateAction Ignore</code>

===== Connexion au serveur =====
 

Vous pouvez vous connecter au serveur avec

<code powershell>$vrops = Connect-OMServer -Server Serveur-vROps.intra -User "votreuser" -Password "motdepasse" -AuthSource "Domaine"</code>

===== Exemple d'utilisation =====

Pour exécuter un rapport

Recherche des éléments du rapport :

<code powershell>Import-Module VMware.VimAutomation.vROps</code>
<code powershell>Get-OMResource -Name "vSphere World" | Select-Object Id</code>


<code>Id
--
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</code>

 

<code powershell>$vrops.ExtensionData.GetReportDefinitions($null, $null, "Oversized Virtual Machines").ReportDefinition</code>

<code>Name                 : Optimization Report - Oversized Virtual Machines
Description          : Oversized VMs Report.
Subject              : {Virtual Machine}
Traversalspecs       : {Custom Datacenters, Application Dependency, vSphere Hosts and Clusters, vSphere Storage…}
LastRunTime          : 01/01/0001 00:00:00
LastRunTimeSpecified : False
Owner                : admin
Links                :
Any                  :
Id                   : yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
CreationTime         : 01/01/0001 00:00:00
Active               : True
ActiveSpecified      : True
AnyAttr              :</code>


Définition du rapport à utiliser :

<code powershell>$TraversalSpec = New-Object VMware.VimAutomation.VROps.Views.TraversalSpec</code>
<code powershell>$TraversalSpec.Name = "vSphere Hosts and Clusters"</code>
<code powershell>$TraversalSpec.RootAdapterKindKey = "VMWARE"</code>
<code powershell>$TraversalSpec.RootResourceKindKey = "vSphere World"</code>
<code powershell>$Report = New-Object VMware.VimAutomation.VROps.Views.Report</code>
<code powershell>$Report.ResourceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"</code>
<code powershell>$Report.ReportDefinitionId = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"</code>
<code powershell>$Report.TraversalSpec = $TraversalSpec</code>
 

Exécution du rapport :

<code powershell>$vrops.ExtensionData.CreateReport($Report)</code>


<code>Name               :
Description        : Oversized VMs Report.
ResourceId         : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ReportDefinitionId : bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
TraversalSpec      :
Subject            : VirtualMachine VirtualMachine
Owner              : cccccccc-cccc-cccc-cccc-cccccccccccc
CompletionTime     : null
Status             : QUEUED
Links              : {linkToSelf, linkToResource, linkToReportDefinition}
Any                :
Id                 : zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
AnyAttr            :</code>

 

Récupération du rapport :

<code powershell>$vrops.ExtensionData.GetReport("zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz")</code>

 

<code>Name               :
Description        : Oversized VMs Report.
ResourceId         : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ReportDefinitionId : bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
TraversalSpec      :
Subject            : VirtualMachine VirtualMachine
Owner              : cccccccc-cccc-cccc-cccc-cccccccccccc
CompletionTime     : Tue Feb 28 11:14:27 UTC 2023
Status             : COMPLETED
Links              : {linkToSelf, linkToResource, linkToReportDefinition}
Any                :
Id                 : zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
AnyAttr            :</code>

 

Récupérer le rapport :

<code powershell>$DataReport = $vrops.ExtensionData.GetReport("zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz")</code>
<code powershell>$DataReport.Links</code>

<code>Description Href                                                                  Rel     Name
----------- ----                                                                  ---     ----
            /suite-api/api/reports/pppppppp-pppp-pppp-pppp-pppppppppppp           SELF    linkToSelf
            /suite-api/api/resources/rrrrrrrr-rrrr-rrrr-rrrr-rrrrrrrrrrrr         RELATED linkToResource
            /suite-api/api/reportdefinitions/ssssssss-ssss-ssss-ssss-ssssssssssss RELATED linkToReportDefinition</code>

 

Par lien WEB :

https://Serveur-vROps.intra/ui/vcops/services/download/report/getCSV?reportId=pppppppp-pppp-pppp-pppp-pppppppppppp

 

Pour récupérer le rapport dans le script :

<code powershell>git clone https://github.com/ryan-jan/vROps-Reports.git</code>
<code powershell>Import-Module ./vROps-Reports/vROps-Reports/vROps-Reports.psd1</code>
<code powershell>Receive-OMReport -Report $DataReport -CSV -Path "./Rapport.csv"</code>
<code powershell>Receive-OMReport -Report $DataReport -PDF -Path "./Rapport.pdf"</code>


Pour le récupérer sans le module externe :

<code powershell>$MemoryStream = New-Object System.IO.MemoryStream</code>
<code powershell>$DataReport.DownloadReport($MemoryStream, "CSV")</code>
<code powershell>$ReadStream = New-Object System.IO.StreamReader($MemoryStream)</code>
<code powershell>$MemoryStream.Seek(0, "Begin")</code>
<code powershell>while ($ReadStream.Peek() -ne -1) {
     $ReadStream.ReadLine() >> Rapport1.csv
}</code>
<code powershell>sed -i '/^$/d' ./Rapport.csv</code>

===== Voir aussi =====

  *[[:Nagios]]
  *[[:Shinken]]
  *[[:Sysstat]] [[https://ubunlog.com/fr/systat-herramienta-monitorizar-ubuntu|Blog tutoriel]]
  *[[:Munin]]

